package jmine.tec.report.xls;

import jmine.tec.report.api.ReportElement;
import jmine.tec.report.api.ReportRenderer;

import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * Interface de renderers de elementos de relatório em xls.
 * 
 * @author lundberg
 */
public interface ReportElementXLSRenderer extends ReportRenderer {

    /**
     * The maximum column width in Excel is 255 characters. 255*256 = 65280
     */
    int MAX_COLUMN_WIDTH = 255 * 256;

    /**
     * Aplica o elemento de relatório à sheet, começando a aplicar a partir da linha de número dado.
     * 
     * @param workbook workbook
     * @param element element
     * @param sheet sheet
     */
    void render(HSSFWorkbook workbook, HSSFSheet sheet, ReportElement element);

    /**
     * Caso o renderer não necessite ter implementação, este método retorna false
     * 
     * @return boolean que diz se faz sentido ter uma implementação do render
     */
    boolean shouldRender();
}
